Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Vala (programming language)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Vala_(programming_language)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Vala_programming_language rootpage-Vala_programming_language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Vala (programming language)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p class="mw-empty-elt">
</p>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">Vala</th></tr><tr><td colspan="2" class="infobox-image"><span typeof="mw:File"></span></td></tr><tr><th scope="row" class="infobox-label"><a href="Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="Programming_paradigm" title="Programming paradigm">Multi-paradigm</a>: <a href="Imperative_programming" title="Imperative programming">imperative</a>, <a href="Structured_programming" title="Structured programming">structured</a>, <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser">Jürg Billeter, Raffaele Sandrini, Rico Tzschichholz</td></tr><tr><th scope="row" class="infobox-label">First&nbsp;appeared</th><td class="infobox-data">2006<span style="display:none">&nbsp;(<span class="bday dtstart published updated">2006</span>)</span></td></tr><tr><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">0.57.0&nbsp;
/ 11 April 2023<span style="display:none">&nbsp;(<span class="bday dtstart published updated">11 April 2023</span>)</span></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label"><a href="Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="Static_typing" class="mw-redirect" title="Static typing">Static</a>, <a href="Strong_and_weak_typing" title="Strong and weak typing">strong</a>, <a href="Type_inference" title="Type inference">inferred</a>, <a href="Structural_type_system" title="Structural type system">structural</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a> all supported by <a href="GLib" title="GLib">GLib</a>, but distributed as source code only.</td></tr><tr><th scope="row" class="infobox-label"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="GNU_Lesser_General_Public_License" title="GNU Lesser General Public License">LGPLv2.1+</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Filename_extension" title="Filename extension">Filename extensions</a></th><td class="infobox-data">.vala, .vapi</td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://vala.dev">vala<wbr>.dev</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="C_(programming_language)" title="C (programming language)">C</a>, <a href="C%2B%2B" title="C++">C++</a>, <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="D_(programming_language)" title="D (programming language)">D</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="Boo_(programming_language)" title="Boo (programming language)">Boo</a></td></tr></tbody></table>
<p><b>Vala</b> is an <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a> <a href="Programming_language" title="Programming language">programming language</a> with a <a href="Self-hosting_(compilers)" title="Self-hosting (compilers)">self-hosting compiler</a> that generates <a href="C_(programming_language)" title="C (programming language)">C</a> code and uses the <a href="GObject" title="GObject">GObject</a> system.
</p><p>Vala is <a href="Syntax_(programming_languages)" title="Syntax (programming languages)">syntactically</a> similar to <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a> and includes notable features such as <a href="Anonymous_functions" class="mw-redirect" title="Anonymous functions">anonymous functions</a>, <a href="Observer_pattern" title="Observer pattern">signals</a>, <a href="Property_(programming)" title="Property (programming)">properties</a>, <a href="Generic_programming" title="Generic programming">generics</a>, <a href="Garbage_collection_(computer_science)" title="Garbage collection (computer science)">assisted memory management</a>, <a href="Exception_handling" title="Exception handling">exception handling</a>, <a href="Type_inference" title="Type inference">type inference</a>, and <a href="Foreach_loop" title="Foreach loop">foreach</a> statements.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Its developers, Jürg Billeter and Raffaele Sandrini, wanted to bring these features to the plain <a href="C_(programming_language)" title="C (programming language)">C</a> runtime with little overhead and no special runtime support by targeting the <a href="GObject" title="GObject">GObject</a> object system. Rather than compiling directly to machine code or assembly language, it compiles to a lower-level <a href="Intermediate_language" class="mw-redirect" title="Intermediate language">intermediate language</a>. It <a href="Source-to-source_compiler" title="Source-to-source compiler">source-to-source compiles</a> to C, which is then compiled with a C compiler for a given platform, such as <a href="GNU_Compiler_Collection" title="GNU Compiler Collection">GCC</a> or <a href="Clang" title="Clang">Clang</a>.<sup id="cite_ref-lwn_2-0" class="reference"><a href="#cite_note-lwn-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Using functionality from native code <a href="Library_(computing)" title="Library (computing)">libraries</a> requires writing vapi files, defining the library <a href="Interface_(computing)" title="Interface (computing)">interfaces</a>. Writing these interface definitions is well-documented for C libraries. Bindings are already available for a large number of libraries, including libraries that are not based on GObject such as the multimedia library <a href="Simple_DirectMedia_Layer" title="Simple DirectMedia Layer">SDL</a> and <a href="OpenGL" title="OpenGL">OpenGL</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Description">Description</h2></div>
<p>Vala is a programming language that combines the <a href="High-level_programming_language" title="High-level programming language">high-level</a> build-time performance of scripting languages with the run-time performance of <a href="Low-level_programming_language" title="Low-level programming language">low-level</a> programming languages. It aims to bring modern programming language features to <a href="GNOME" title="GNOME">GNOME</a> developers without imposing any additional runtime requirements and without using a different <a href="Application_binary_interface" title="Application binary interface">ABI</a>, compared to applications and libraries written in C. The syntax of Vala is similar to <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, modified to better fit the <a href="GObject#The_type_system" title="GObject">GObject type system</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>Vala was conceived by Jürg Billeter and was implemented by him and Raffaele Sandrini, who wished for a higher-level alternative for developing <a href="GNOME" title="GNOME">GNOME</a> applications instead of C. They liked the syntax and semantics of C# but did not want to use <a href="Mono_(software)" title="Mono (software)">Mono</a>, so they finished a compiler in May 2006. Initially, it was <a href="Bootstrapping_(compilers)" title="Bootstrapping (compilers)">bootstrapped</a> using C, and one year later (with release of version 0.1.0 in July 2007), the Vala compiler became <a href="Self-hosting_(compilers)" title="Self-hosting (compilers)">self-hosted</a>. In 2008, the Genie language was created to expose a <a href="Python_(programming_language)" title="Python (programming language)">Python</a>-like syntax to the Vala compiler.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> As of 2021, the current stable release branch with <a href="Long-term_support" title="Long-term support">long-term support</a> is 0.48, and the language is under active development with the goal of releasing a stable version 1.0.<sup id="cite_ref-vala_book_5-0" class="reference"><a href="#cite_note-vala_book-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<table class="wikitable">

<tbody><tr>
<th>Version
</th>
<th>Release date<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</th>
<th>Remarks
</th></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.0.1"><span style="display: none;">Unsupported:</span> 0.0.1<style data-mw-deduplicate="TemplateStyles:r1295599781">
/* start https://en.wikipedia.org/ */


.mw-parser-output .version-legend{display:flex;flex-wrap:wrap;column-gap:12px}.mw-parser-output .version-legend-vertical{display:flex;flex-wrap:wrap;column-gap:4px;flex-direction:column}.mw-parser-output .version-legend .legend-item,.mw-parser-output .version-legend-vertical .legend-item{page-break-inside:avoid;break-inside:avoid-column;gap:4px}.mw-parser-output .version-legend .legend-item .swatch,.mw-parser-output .version-legend-vertical .legend-item .swatch{display:inline-block;width:1.25em;height:1.25em;border:1px solid #aaa;margin-top:1px}.mw-parser-output .swatch-unsupported{background-color:#fdb3ab}.mw-parser-output .swatch-maintained{background-color:#f8eaba}.mw-parser-output .swatch-latest{background-color:#d4f4b4}.mw-parser-output .swatch-preview{background-color:#c1e6f5}.mw-parser-output .swatch-future{background-color:#f2e2fc}@media screen{html.skin-theme-clientpref-night .mw-parser-output .version-legend .legend-item .swatch,html.skin-theme-clientpref-night .mw-parser-output .version-legend-vertical .legend-item .swatch{border-color:#72777d}html.skin-theme-clientpref-night .mw-parser-output .swatch-unsupported{background-color:#421511}html.skin-theme-clientpref-night .mw-parser-output .swatch-maintained{background-color:#433500}html.skin-theme-clientpref-night .mw-parser-output .swatch-latest{background-color:#334423}html.skin-theme-clientpref-night .mw-parser-output .swatch-preview{background-color:#154467}html.skin-theme-clientpref-night .mw-parser-output .swatch-future{background-color:#3C2e69}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .version-legend .legend-item .swatch,html.skin-theme-clientpref-os .mw-parser-output .version-legend-vertical .legend-item .swatch{border-color:#72777d}html.skin-theme-clientpref-os .mw-parser-output .swatch-unsupported{background-color:#421511}html.skin-theme-clientpref-os .mw-parser-output .swatch-maintained{background-color:#433500}html.skin-theme-clientpref-os .mw-parser-output .swatch-latest{background-color:#334423}html.skin-theme-clientpref-os .mw-parser-output .swatch-preview{background-color:#154467}html.skin-theme-clientpref-os .mw-parser-output .swatch-future{background-color:#3C2e69}}


/* end https://en.wikipedia.org/ */
</style>
</td>
<td>2006-07-15
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.1.0"><span style="display: none;">Unsupported:</span> 0.1.0
</td>
<td>2007-07-09
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.10.0"><span style="display: none;">Unsupported:</span> 0.10.0
</td>
<td>2010-09-18
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.20.0"><span style="display: none;">Unsupported:</span> 0.20.0
</td>
<td>2013-05-27
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.30.0"><span style="display: none;">Unsupported:</span> 0.30.0
</td>
<td>2015-09-18
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.40.0"><span style="display: none;">Unsupported:</span> 0.40.0
</td>
<td>2018-05-12
</td>
<td>Stable Long-term Support
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.42.0"><span style="display: none;">Unsupported:</span> 0.42.0
</td>
<td>2018-09-01
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.44.0"><span style="display: none;">Unsupported:</span> 0.44.0
</td>
<td>2019-05-09
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.46.0"><span style="display: none;">Unsupported:</span> 0.46.0
</td>
<td>2019-09-05
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.48.0"><span style="display: none;">Unsupported:</span> 0.48.0
</td>
<td>2020-03-03
</td>
<td>Stable Long-term Support
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.50.0"><span style="display: none;">Unsupported:</span> 0.50.0
</td>
<td>2020-09-10
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.52.0"><span style="display: none;">Unsupported:</span> 0.52.0
</td>
<td>2021-05-17
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.54.0"><span style="display: none;">Unsupported:</span> 0.54.0
</td>
<td>2021-09-16
</td>
<td>
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-maintained" style="color: var(--color-base, #202122);" title="Supported" data-sort-value="0.40.25"><span style="display: none;">Supported:</span> 0.40.25
</td>
<td>2021-01-11
</td>
<td>Stable Long-term Support
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-unsupported" style="color: var(--color-base, #202122);" title="Unsupported" data-sort-value="0.56.0"><span style="display: none;">Unsupported:</span> 0.56.0
</td>
<td>2022-03-17
</td>
<td>Stable Long-term Support
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion co swatch-maintained" style="color: var(--color-base, #202122);" title="Supported" data-sort-value="0.48.25"><span style="display: none;">Supported:</span> 0.48.25
</td>
<td>2022-09-16
</td>
<td>Stable Long-term Support
</td></tr>
<tr style="text-align: center;">
<td class="templateVersion c swatch-latest" style="color: var(--color-base, #202122);" title="Latest version" data-sort-value="0.56.17"><span style="display: none;">Latest version:</span> <span style="font-weight: 600"> 0.56.17</span>
</td>
<td>2024-04-19
</td>
<td>Stable Long-term Support
</td></tr>
<tr>
<td colspan="100%"><div class="templateVersion l version-legend" style=""><div style=""><span style="white-space: nowrap;"><b>Legend:</b></span></div><div style="display: flex;" class="legend-item">Unsupported</div><div style="display: flex;" class="legend-item">Supported</div><div style="display: flex;" class="legend-item"><b>Latest version</b></div><div style="display: none;" class="legend-item">Preview version</div><div style="display: none;" class="legend-item">Future version</div></div>
</td></tr>
<tr>
<td colspan="40%">For old versions, only first point releases are listed
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Language_design">Language design</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Features">Features</h3></div>
<p>Vala uses GLib and its submodules (<a href="GObject" title="GObject">GObject</a>, GModule, GThread, GIO) as the core library, which is available for most <a href="Operating_systems" class="mw-redirect" title="Operating systems">operating systems</a> and offers things like platform independent <a href="Thread_(computing)" title="Thread (computing)">threading</a>, <a href="Standard_streams" title="Standard streams">input/output</a>, <a href="File_management" class="mw-redirect" title="File management">file management</a>, <a href="Network_sockets" class="mw-redirect" title="Network sockets">network sockets</a>, <a href="Dynamic_loading" title="Dynamic loading">plugins</a>, <a href="Regular_expressions" class="mw-redirect" title="Regular expressions">regular expressions</a>, etc. The syntax of Vala currently supports modern language features as follows:
</p>
<ul><li><a href="Interface_(object-oriented_programming)" title="Interface (object-oriented programming)">Interfaces</a></li>
<li><a href="Property_(programming)" title="Property (programming)">Properties</a></li>
<li><a href="Signal_programming" class="mw-redirect" title="Signal programming">Signals</a></li>
<li><a href="Foreach_loop" title="Foreach loop">Foreach</a></li>
<li><a href="Anonymous_function" title="Anonymous function">Lambda expressions</a></li>
<li><a href="Type_inference" title="Type inference">Type inference for local variables</a></li>
<li><a href="Generic_programming" title="Generic programming">Generics</a></li>
<li><a href="Void_safety" title="Void safety">Non-null types</a></li>
<li><a href="Garbage_collection_(computer_science)" title="Garbage collection (computer science)">Assisted memory management</a></li>
<li><a href="Exception_handling" title="Exception handling">Exception handling</a></li></ul>
<p><a href="Graphical_user_interfaces" class="mw-redirect" title="Graphical user interfaces">Graphical user interfaces</a> can be developed with the <a href="GTK" title="GTK">GTK</a> <a href="GUI_toolkit" class="mw-redirect" title="GUI toolkit">GUI toolkit</a> and the <a href="Glade_Interface_Designer" title="Glade Interface Designer">Glade</a> <a href="GUI_builder" class="mw-redirect" title="GUI builder">GUI builder</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Memory_management">Memory management</h3></div>
<p>For memory management, the GType or <a href="GObject" title="GObject">GObject</a> system provides <a href="Reference_counting" title="Reference counting">reference counting</a>. In C, a programmer must manually manage adding and removing references, but in Vala, managing such reference counts is automated if a programmer uses the language's built-in reference types rather than plain pointers. The only detail one needs to worry about is to avoid generating <a href="Reference_counting#Dealing_with_reference_cycles" title="Reference counting">reference cycles</a>, because in that case this memory management system will not work correctly.<sup id="cite_ref-valamem_7-0" class="reference"><a href="#cite_note-valamem-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>Vala also allows manual memory management with <a href="Pointer_(computer_programming)" title="Pointer (computer programming)">pointers</a> as an option.
</p>
<div class="mw-heading mw-heading3"><h3 id="Bindings">Bindings</h3></div>
<p>Vala is intended to provide runtime access to existing C libraries, especially <a href="GObject" title="GObject">GObject</a>-based libraries, without the need for runtime bindings.
To use a library with Vala, all that is needed is an API file (.vapi) containing the class and method declarations in Vala syntax.
However, C++ libraries are not supported. At present, vapi files for a large part of the <a href="GNU" title="GNU">GNU</a> project and GNOME platform are included with each release of Vala, including <a href="GTK" title="GTK">GTK</a>. There is also a library called Gee, written in Vala, that provides <a href="GObject" title="GObject">GObject</a>-based interfaces and classes for commonly used <a href="Data_structure" title="Data structure">data structures</a>.<sup id="cite_ref-gee_8-0" class="reference"><a href="#cite_note-gee-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p><p>It should also be easily possible to write a bindings generator for access to Vala libraries from applications written in other languages, e.g., C#, as the Vala parser is written as a library, so that all compile-time information is available when generating a binding.
</p>
<div class="mw-heading mw-heading2"><h2 id="Tools">Tools</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Editors">Editors</h3></div>
<p>Tooling for Vala development has seen significant improvement over the recent years. The following is a list of some popular <a href="Integrated_development_environment" title="Integrated development environment">IDEs</a> and <a href="Text_editor" title="Text editor">text editors</a> with plug-ins that add support for programming in Vala:
</p>
<ul><li><a href="GNOME_Builder" title="GNOME Builder">GNOME Builder</a></li>
<li><a href="Visual_Studio_Code" title="Visual Studio Code">Visual Studio Code</a>, with Vala plugin<sup id="cite_ref-vala-vscode_9-0" class="reference"><a href="#cite_note-vala-vscode-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Vim_(text_editor)" title="Vim (text editor)">Vim</a>, with arrufat/vala.vim plugin<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Emacs" title="Emacs">Emacs</a>, with vala-mode<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Atom_(text_editor)" title="Atom (text editor)">Atom</a></li>
<li><a href="Geany" title="Geany">Geany</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Code_intelligence">Code intelligence</h3></div>
<p>Currently, there are two actively developing <a href="Language_Server_Protocol" title="Language Server Protocol">language servers</a> which offer <a href="Intelligent_code_completion" class="mw-redirect" title="Intelligent code completion">code intelligence</a> for Vala as follows:
</p>
<ul><li>vala-lang/vala-language-server, designed for any editor that supports <a href="Language_Server_Protocol" title="Language Server Protocol">LSP</a>, including VSCode, vim, and GNOME Builder<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup></li>
<li>esodan/gvls, currently the default language server for Vala in GNOME Builder and provides support to any editor with support for <a href="Language_Server_Protocol" title="Language Server Protocol">LSP</a><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Build_systems">Build systems</h3></div>
<p>Currently, there are a number of <a href="Build_automation" title="Build automation">build systems</a> supporting Vala, including <a href="Automake" title="Automake">Automake</a>, <a href="CMake" title="CMake">CMake</a>, <a href="Meson_(software)" title="Meson (software)">Meson</a>, and others.<sup id="cite_ref-vala-tools_14-0" class="reference"><a href="#cite_note-vala-tools-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Debugging">Debugging</h3></div>
<p>Debugging for Vala programs can be done with either <a href="GNU_Debugger" title="GNU Debugger">GDB</a> or <a href="LLDB_(debugger)" title="LLDB (debugger)">LLDB</a>. For debugging in <a href="Integrated_development_environment" title="Integrated development environment">IDEs</a>,
</p>
<ul><li><a href="GNOME_Builder" title="GNOME Builder">GNOME Builder</a> has built-in debugging support for Vala with <a href="GNU_Debugger" title="GNU Debugger">GDB</a>.</li>
<li><a href="Visual_Studio_Code" title="Visual Studio Code">Visual Studio Code</a> has extensions for <a href="GNU_Debugger" title="GNU Debugger">GDB</a> and <a href="LLDB_(debugger)" title="LLDB (debugger)">LLDB</a>, such as cpptools and CodeLLDB.<sup id="cite_ref-vala-vscode_9-1" class="reference"><a href="#cite_note-vala-vscode-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Hello_world">Hello world</h3></div>
<p>simple "<a href="Hello_world_program" class="mw-redirect" title="Hello world program">Hello, World!</a>" program in Vala:
</p>
<div class="mw-highlight mw-highlight-lang-vala mw-content-ltr" dir="ltr"><pre><span class="kt">void</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="s">"Hello World</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<p>As can be noted, unlike C or C++, there are no header files in Vala. The linking to <a href="Library_(computing)" title="Library (computing)">libraries</a> is done by specifying <code>--pkg</code> parameters during compiling. Moreover, the GLib library is always linked and its namespace can be omitted (<code>print</code> is in fact <code>GLib.print</code>).
</p>
<div class="mw-heading mw-heading3"><h3 id="Object-oriented_programming">Object-oriented programming</h3></div>
<p>Below is a more complex version which defines a subclass <code>HelloWorld</code> inheriting from the base class <code>GLib.Object</code>, aka the <a href="GObject" title="GObject">GObject</a> class. It shows some of Vala's <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a> features:
</p>
<div class="mw-highlight mw-highlight-lang-vala mw-content-ltr" dir="ltr"><pre><span class="kd">class</span><span class="w"> </span><span class="nc">HelloWorld</span><span class="o">:</span><span class="w"> </span><span class="n">Object</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">uint</span><span class="w"> </span><span class="n">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w"> </span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">HelloWorld</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">HelloWorld</span><span class="p">.</span><span class="n">with_year</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">year</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">year</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">)</span>
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="n">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">year</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>

<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">greeting</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">year</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="s">"Hello World</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="w"> </span><span class="k">else</span>
<span class="w"> </span><span class="cm">/* Strings prefixed with '@' are string templates. */</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="s">@"Hello World, $(this.year)</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">helloworld</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HelloWorld</span><span class="p">.</span><span class="n">with_year</span><span class="w"> </span><span class="p">(</span><span class="mi">2021</span><span class="p">);</span>
<span class="w"> </span><span class="n">helloworld</span><span class="p">.</span><span class="n">greeting</span><span class="w"> </span><span class="p">();</span>
<span class="p">}</span>
</pre></div>
<p>As in the case of <a href="GObject#Comparisons_to_other_object_systems" title="GObject">GObject library</a>, Vala does not support <a href="Multiple_inheritance" title="Multiple inheritance">multiple inheritance</a>, but a class in Vala can implement any number of <a href="Interface_(object-oriented_programming)" title="Interface (object-oriented programming)">interfaces</a>, which may contain default implementations for their methods. Here is a piece of sample code to demonstrate a Vala interface with default implementation (sometimes referred to as a <a href="Mixin" title="Mixin">mixin</a>)
</p>
<div class="mw-highlight mw-highlight-lang-vala mw-content-ltr" dir="ltr"><pre><span class="kn">using</span><span class="w"> </span><span class="nn">GLib</span><span class="p">;</span>

<span class="kd">interface</span><span class="w"> </span><span class="nc">Printable</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">abstract</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">();</span>

<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">virtual</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">pretty_print</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"Please "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="kd">class</span><span class="w"> </span><span class="nc">NormalPrint</span><span class="o">:</span><span class="w"> </span><span class="n">Object</span><span class="p">,</span><span class="w"> </span><span class="n">Printable</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"don't forget about me"</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="kd">class</span><span class="w"> </span><span class="nc">OverridePrint</span><span class="o">:</span><span class="w"> </span><span class="n">Object</span><span class="p">,</span><span class="w"> </span><span class="n">Printable</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"Mind the gap"</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>

<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">override</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">pretty_print</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"Override"</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">normal</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">NormalPrint</span><span class="w"> </span><span class="p">();</span>
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">overridden</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">OverridePrint</span><span class="w"> </span><span class="p">();</span>

<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="n">normal</span><span class="p">.</span><span class="n">pretty_print</span><span class="w"> </span><span class="p">());</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="n">overridden</span><span class="p">.</span><span class="n">pretty_print</span><span class="w"> </span><span class="p">());</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Signals_and_callbacks">Signals and callbacks</h3></div>
<p>Below is a basic example to show how to define a signal in a class that is not compact, which has a signal system built in by Vala through GLib. Then <a href="Callback_(computer_programming)" title="Callback (computer programming)">callback</a> functions are registered to the signal of an instance of the class. The instance can emit the signal and each callback function (also referred to as handler) connected to the signal for the instance will get invoked in the order they were connected in:
</p>
<div class="mw-highlight mw-highlight-lang-vala mw-content-ltr" dir="ltr"><pre><span class="kd">class</span><span class="w"> </span><span class="nc">Foo</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">signal</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">some_event</span><span class="w"> </span><span class="p">();</span><span class="w"> </span><span class="c1">// definition of the signal</span>

<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">method</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">some_event</span><span class="w"> </span><span class="p">();</span><span class="w"> </span><span class="c1">// emitting the signal (callbacks get invoked)</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">callback_a</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">stdout</span><span class="p">.</span><span class="n">printf</span><span class="w"> </span><span class="p">(</span><span class="s">"Callback A</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">callback_b</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">stdout</span><span class="p">.</span><span class="n">printf</span><span class="w"> </span><span class="p">(</span><span class="s">"Callback B</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="p">();</span>
<span class="w"> </span><span class="n">foo</span><span class="p">.</span><span class="n">some_event</span><span class="p">.</span><span class="n">connect</span><span class="w"> </span><span class="p">(</span><span class="n">callback_a</span><span class="p">);</span><span class="w"> </span><span class="c1">// connecting the callback functions</span>
<span class="w"> </span><span class="n">foo</span><span class="p">.</span><span class="n">some_event</span><span class="p">.</span><span class="n">connect</span><span class="w"> </span><span class="p">(</span><span class="n">callback_b</span><span class="p">);</span>
<span class="w"> </span><span class="n">foo</span><span class="p">.</span><span class="n">method</span><span class="w"> </span><span class="p">();</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Threading">Threading</h3></div>
<p>A new <a href="Thread_(computing)" title="Thread (computing)">thread</a> in Vala is a portion of code such as a function that is requested to be executed concurrently at runtime. The creation and synchronization of new threads are done by using the <code>Thread</code> class in GLib, which takes the function as a parameter when creating new threads, as shown in the following (very simplified) example:
</p>
<div class="mw-highlight mw-highlight-lang-vala mw-content-ltr" dir="ltr"><pre><span class="kt">int</span><span class="w"> </span><span class="n">question</span><span class="p">(){</span>
<span class="w"> </span><span class="c1">// Some print operations </span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">){</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="s">"."</span><span class="p">);</span>
<span class="w"> </span><span class="n">Thread</span><span class="p">.</span><span class="n">usleep</span><span class="w"> </span><span class="p">(</span><span class="mi">800000</span><span class="p">);</span>
<span class="w"> </span><span class="n">stdout</span><span class="p">.</span><span class="n">flush</span><span class="w"> </span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>

<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">42</span><span class="p">;</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">Thread</span><span class="p">.</span><span class="n">supported</span><span class="w"> </span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">stderr</span><span class="p">.</span><span class="n">printf</span><span class="w"> </span><span class="p">(</span><span class="s">"Cannot run without thread support.</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">print</span><span class="w"> </span><span class="p">(</span><span class="s">"The Ultimate Question of Life, the Universe, and Everything"</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Generic parameter is the type of return value</span>
<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">thread</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Thread</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="p">(</span><span class="s">"question"</span><span class="p">,</span><span class="w"> </span><span class="n">question</span><span class="p">);</span>

<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s">@" $(thread.join ())</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Graphical_user_interface">Graphical user interface</h3></div>
<p>Below is an example using <a href="GTK" title="GTK">GTK</a> to create a <a href="Graphical_user_interface" title="Graphical user interface">GUI</a> "Hello, World!" program (see also <a href="GTK#Example" title="GTK">GTK hello world</a>) in Vala:
</p>
<div class="mw-highlight mw-highlight-lang-vala mw-content-ltr" dir="ltr"><pre><span class="kn">using</span><span class="w"> </span><span class="nn">Gtk</span><span class="p">;</span>

<span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="w"> </span><span class="p">(</span><span class="kt">string</span><span class="p">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">Gtk</span><span class="p">.</span><span class="n">init</span><span class="w"> </span><span class="p">(</span><span class="kd">ref</span><span class="w"> </span><span class="n">args</span><span class="p">);</span>

<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">window</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Window</span><span class="w"> </span><span class="p">();</span>
<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Hello, World!"</span><span class="p">;</span>
<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">border_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">window_position</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">WindowPosition</span><span class="p">.</span><span class="n">CENTER</span><span class="p">;</span>
<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">set_default_size</span><span class="w"> </span><span class="p">(</span><span class="mi">350</span><span class="p">,</span><span class="w"> </span><span class="mi">70</span><span class="p">);</span>
<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">destroy</span><span class="p">.</span><span class="n">connect</span><span class="w"> </span><span class="p">(</span><span class="n">Gtk</span><span class="p">.</span><span class="n">main_quit</span><span class="p">);</span>

<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Label</span><span class="w"> </span><span class="p">(</span><span class="s">"Hello, World!"</span><span class="p">);</span>

<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">add</span><span class="w"> </span><span class="p">(</span><span class="n">label</span><span class="p">);</span>
<span class="w"> </span><span class="n">window</span><span class="p">.</span><span class="n">show_all</span><span class="w"> </span><span class="p">();</span>

<span class="w"> </span><span class="n">Gtk</span><span class="p">.</span><span class="n">main</span><span class="w"> </span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>The statement <code>Gtk.main ()</code> creates and starts a <a href="Event_loop" title="Event loop">main loop</a> listening for events, which are passed along via signals to the callback functions. As this example uses the <a href="GTK" title="GTK">GTK</a> package, it needs an extra <code>--pkg</code> parameter (which invokes <a href="Pkg-config" title="Pkg-config">pkg-config</a> in the C <a href="Front_end_and_back_end" class="mw-redirect" title="Front end and back end">backend</a>) to compile:
</p>
<div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre>valac<span class="w"> </span>--pkg<span class="w"> </span>gtk+-3.0<span class="w"> </span>hellogtk.vala
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */


.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}


/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Shotwell_(software)" title="Shotwell (software)">Shotwell</a>, an image organiser written in Vala.</li>
<li><a href="Geary_(software)" class="mw-redirect" title="Geary (software)">Geary</a>, an email client written in Vala.</li>
<li><a href="Elementary_OS" title="Elementary OS">elementary OS</a>, a Linux distribution with a desktop environment programmed mostly in Vala.</li>
<li><a href="Budgie_(desktop_environment)" title="Budgie (desktop environment)">Budgie</a>, a Linux desktop environment programmed mostly in Vala.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://arstechnica.com/information-technology/2007/09/vala-high-level-programming-with-less-fat/">"Vala: high-level programming with less fat"</a>. <a href="Ars_Technica" title="Ars Technica">Ars Technica</a>. 2 September 2007<span class="reference-accessdate">. Retrieved <span class="nowrap">13 December</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-lwn-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-lwn_2-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lwn.net/Articles/335966/">"A look at two new languages: Vala and Clojure"</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://gitlab.gnome.org/GNOME/vala/">"Vala· GitLab"</a>. <a href="GNOME" title="GNOME">GNOME</a><span class="reference-accessdate">. Retrieved <span class="nowrap">16 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFJančárChodarev2015" class="citation conference cs1">Jančár, M.; Chodarev, S. (2015). "A generative framework for development of CRUD-based Linux desktop applications". <i>2015 IEEE 13th International Scientific Conference on Informatics</i>. Poprad, Slovakia. pp.&nbsp;<span class="nowrap">133–</span>138. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FInformatics.2015.7377821">10.1109/Informatics.2015.7377821</a>. <q>The Vala compiler also supports the Genie language, which is almost equal to Vala except the syntax. That is useful especially for defining models because of simple, "Python-like" syntax of Genie.</q></cite></span>
</li>
<li id="cite_note-vala_book-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-vala_book_5-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMichael_Lauer2019" class="citation book cs1">Michael Lauer (2019). <a rel="nofollow" class="external text" href="https://link.springer.com/book/10.1007/978-1-4842-5380-9"><i>Introducing Vala Programming</i></a>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-1-4842-5380-9">10.1007/978-1-4842-5380-9</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-4842-5379-3</bdi>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:207911698">207911698</a><span class="reference-accessdate">. Retrieved <span class="nowrap">16 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://gitlab.gnome.org/GNOME/vala/-/tags">"Vala Releases"</a>. Vala Project<span class="reference-accessdate">. Retrieved <span class="nowrap">18 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-valamem-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-valamem_7-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/ReferenceHandling">"Vala's Memory Management Explained"</a>.</cite></span>
</li>
<li id="cite_note-gee-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-gee_8-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://gitlab.gnome.org/GNOME/libgee/">"Libgee on Gitlab"</a>.</cite></span>
</li>
<li id="cite_note-vala-vscode-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-vala-vscode_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-vala-vscode_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/Tools/VisualStudioCode">"Coding in Vala with Visual Studio Code"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">17 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/Tools/Vim">"Coding in Vala with the Vim Text Editor"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">17 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/Emacs">"Enable Vala syntax highlighting and code browser support in GNU Emacs"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">17 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/vala-lang/vala-language-server">"vala-lang/vala-language-server on Github"</a>. <i><a href="GitHub" title="GitHub">GitHub</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">17 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://gitlab.gnome.org/esodan/gvls">"esodan/gvls on GitLab"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">17 March</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-vala-tools-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-vala-tools_14-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/Tools">"Vala Tools"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">29 March</span> 2021</span>.</cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1290876196">
/* start https://en.wikipedia.org/ */


.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .infobox .side-box{font-size:100%}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1237033735">
/* start https://en.wikipedia.org/ */


@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}


/* end https://en.wikipedia.org/ */
</style><div class="side-box side-box-right sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">
/* start https://en.wikipedia.org/ */


.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}


/* end https://en.wikipedia.org/ */
</style>
<div class="side-box-flex">
<div class="side-box-image"><span class="noviewer" typeof="mw:File"></span></div>
<div class="side-box-text plainlist">Wikibooks has a book on the topic of: <i><b><a href="https://en.wikibooks.org/wiki/Vala_Programming" class="extiw external" title="wikibooks:Vala Programming">Vala Programming</a></b></i></div></div>
</div>
<div class="side-box side-box-right sistersitebox">
<div class="side-box-flex">
<div class="side-box-image"><span class="noviewer" typeof="mw:File"></span></div>
<div class="side-box-text plainlist">Wikimedia Commons has media related to <span style="font-weight: bold; font-style: italic;"><a href="https://commons.wikimedia.org/wiki/Category:Vala_(programming_language)" class="extiw external" title="commons:Category:Vala (programming language)">Vala (programming language)</a></span>.</div></div>
</div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://vala.dev">Official website</a></span></span></li>
<li><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala">GNOME Wiki Page</a></li>
<li><a rel="nofollow" class="external text" href="http://valadoc.org">API Documentation</a></li>
<li><a rel="nofollow" class="external text" href="https://gitlab.gnome.org/GNOME/vala">Vala</a> repository on <a href="GNOME" title="GNOME">GNOME</a> · <a href="GitLab" title="GitLab">GitLab</a></li>
<li><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Libgee">LibGee</a>, a utility library for Vala.</li>
<li><a rel="nofollow" class="external text" href="http://bazaar.launchpad.net/~sepisoad/vala-totrials/ValaTutorials/files">Vala sample code for beginners</a></li>
<li><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/Documentation#Projects_Developed_in_Vala">List of Vala programs</a></li>
<li><a rel="nofollow" class="external text" href="https://www.rastersoft.com/programas/autovala.html">Autovala, a program that automatizes and simplifies creating CMake and Meson files for Vala/C projects</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/vala-lang/">The Vala community on GitHub</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/akiraux/Akira">Akira</a> - Linux native designer tool</li>
<li><a rel="nofollow" class="external text" href="https://www.datatable.online">Kangaroo</a> - Cross-platform database client tool for popular databases</li></ul>
<dl><dt>Comparison with other languages</dt></dl>
<ul><li><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/ValaForJavaProgrammers">Vala and Java</a></li>
<li><a rel="nofollow" class="external text" href="https://wiki.gnome.org/Projects/Vala/ValaForCSharpProgrammers">Vala and C#</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/kostya/benchmarks">Benchmarks of different languages, including Vala</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="GNOME822" style="padding:3px"><table class="nowraplinks hlist mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="GNOME822" style="font-size:114%;margin:0 4em"><a href="GNOME" title="GNOME">GNOME</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="GNOME_Core_Applications" title="GNOME Core Applications">Core Applications</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="GNOME_Boxes" title="GNOME Boxes">Boxes</a></li>
<li><a href="GNOME_Calculator" title="GNOME Calculator">Calculator</a></li>
<li>Calendar</li>
<li>Character Map</li>
<li><a href="GNOME_Disks" title="GNOME Disks">Disks</a></li>
<li><a href="Evince" title="Evince">Evince</a></li>
<li><a href="GNOME_Files" title="GNOME Files">Files</a></li>
<li><a href="Loupe_(software)" title="Loupe (software)">Loupe</a></li>
<li><a href="GNOME_Text_Editor" title="GNOME Text Editor">Text Editor</a></li>
<li><a href="GNOME_Software" title="GNOME Software">Software</a></li>
<li>Snapshot</li>
<li><a href="GNOME_Terminal" title="GNOME Terminal">Terminal</a></li>
<li>Showtime</li>
<li>Audio Player</li>
<li><a href="GNOME_Web" title="GNOME Web">Web</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="List_of_GTK_applications" title="List of GTK applications">Extras</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:9em">Development</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="GNOME_Builder" title="GNOME Builder">Builder</a></li>
<li><a href="Glade_Interface_Designer" title="Glade Interface Designer">Glade Interface Designer</a></li>
<li><a href="Meld_(software)" title="Meld (software)">Meld</a></li>
<li><a href="GNOME_Devhelp" title="GNOME Devhelp">GNOME Devhelp</a></li>
<li><a href="Gtranslator" title="Gtranslator">Gtranslator</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Office</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AbiWord" title="AbiWord">AbiWord</a></li>
<li><a href="Dia_(software)" title="Dia (software)">Dia</a></li>
<li><a href="GNOME_Evolution" title="GNOME Evolution">Evolution</a></li>
<li><a href="GNOME_LaTeX" title="GNOME LaTeX">GNOME LaTeX</a></li>
<li><a href="Gnumeric" title="Gnumeric">Gnumeric</a></li>
<li><a href="OCRFeeder" title="OCRFeeder">OCRFeeder</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Graphics</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="F-Spot" title="F-Spot">F-Spot</a></li>
<li><a href="GIMP" title="GIMP">GIMP</a></li>
<li><a href="GThumb" title="GThumb">gThumb</a></li>
<li><a href="Inkscape" title="Inkscape">Inkscape</a></li>
<li><a href="Shotwell_(software)" title="Shotwell (software)">Shotwell</a></li>
<li><a href="Scanner_Access_Now_Easy#Simple_Scan" title="Scanner Access Now Easy">Simple Scan</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Internet</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Balsa_(email_client)" title="Balsa (email client)">Balsa</a></li>
<li><a href="Empathy_(software)" title="Empathy (software)">Empathy</a></li>
<li><a href="Ekiga" title="Ekiga">Ekiga</a></li>
<li><a href="Geary_(e-mail_client)" title="Geary (e-mail client)">Geary</a></li>
<li>GNOME Connections</li>
<li><a href="GNOME_Fractal" class="mw-redirect" title="GNOME Fractal">GNOME Fractal</a></li>
<li><a href="Gobby" title="Gobby">Gobby</a></li>
<li><a href="Jami_(software)" title="Jami (software)">Jami</a></li>
<li><a href="Transmission_(BitTorrent_client)" title="Transmission (BitTorrent client)">Transmission-gtk</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Media</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Banshee_(media_player)" title="Banshee (media player)">Banshee</a></li>
<li>EasyTag</li>
<li><a href="Pitivi" title="Pitivi">Pitivi</a></li>
<li><a href="Rhythmbox" title="Rhythmbox">Rhythmbox</a></li>
<li><a href="Sound_Juicer" title="Sound Juicer">Sound Juicer</a></li>
<li><a href="GNOME_SoundConverter" title="GNOME SoundConverter">SoundConverter</a></li>
<li><a href="Sushi_(software)" class="mw-redirect" title="Sushi (software)">sushi</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Games</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="GNOME_Games" class="mw-redirect" title="GNOME Games">GNOME Games</a>
<ul><li><a href="GNOME_Chess" class="mw-redirect" title="GNOME Chess">Chess</a></li>
<li><a href="GNOME_Mines" class="mw-redirect" title="GNOME Mines">Mines</a></li></ul></li>
<li><a href="Gbrainy" class="mw-redirect" title="Gbrainy">gbrainy</a></li>
<li><a href="PyChess" title="PyChess">PyChess</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Utilities</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Archive_Manager" class="mw-redirect" title="Archive Manager">Archive Manager</a></li>
<li><a href="Brasero_(software)" title="Brasero (software)">Brasero</a></li>
<li><a href="Dconf" title="Dconf">dconf-editor</a></li>
<li><a href="Gedit" title="Gedit">gedit</a></li>
<li><a href="Gnote" title="Gnote">gnote</a></li>
<li><a href="GParted" title="GParted">GParted</a></li>
<li><a href="Seahorse_(software)" title="Seahorse (software)">Seahorse</a></li>
<li><a href="Tomboy_(software)" title="Tomboy (software)">Tomboy</a></li>
<li><a href="Yelp_(software)" title="Yelp (software)">Yelp</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:9em">User interface</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">GNOME 40</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Mutter on GSK</li>
<li>…</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">GNOME 3</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Client-Side_Decoration" class="mw-redirect" title="Client-Side Decoration">Client-Side Decoration</a></li>
<li><a href="Cantarell_(typeface)" title="Cantarell (typeface)">Cantarell</a></li>
<li><a href="GNOME_Display_Manager" title="GNOME Display Manager">GDM</a></li>
<li><a href="Mutter_(software)" title="Mutter (software)">Mutter</a></li>
<li><a href="GNOME_Shell" title="GNOME Shell">GNOME Shell</a></li>
<li><a href="Tango_Desktop_Project" title="Tango Desktop Project">Tango Desktop Project</a></li>
<li><a href="Orca_(assistive_technology)" title="Orca (assistive technology)">Orca</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">GNOME 2</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Metacity" title="Metacity">Metacity</a></li>
<li><a href="GNOME_Panel" class="mw-redirect" title="GNOME Panel">GNOME Panel</a></li>
<li><a href="Clearlooks" title="Clearlooks">Clearlooks</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Adwaita_(design_language)" title="Adwaita (design language)">Adwaita</a></li>
<li><a href="Cinnamon_(software)" class="mw-redirect" title="Cinnamon (software)">Cinnamon</a></li>
<li><a href="MATE_(software)" class="mw-redirect" title="MATE (software)">MATE</a></li>
<li><a href="Diodon_(software)" title="Diodon (software)">Diodon</a></li>
<li><a href="GNOME_Do" title="GNOME Do">GNOME Do</a></li>
<li><a href="Avant_Window_Navigator" title="Avant Window Navigator">Avant Window Navigator</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">GNOME Base</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="GTK" title="GTK">GTK</a>
<ul><li><a href="GDK" title="GDK">GDK</a></li>
<li><a href="GTK_Scene_Graph_Kit" title="GTK Scene Graph Kit">GSK</a></li>
<li><a href="Accessibility_Toolkit" title="Accessibility Toolkit">ATK</a></li>
<li>Clutter</li></ul></li>
<li><a href="Pango" title="Pango">Pango</a></li>
<li><a href="GLib" title="GLib">GLib</a>
<ul><li><a href="GObject" title="GObject">GObject</a></li>
<li><a href="GIO_(software)" title="GIO (software)">GIO</a></li></ul></li>
<li><a href="Intelligent_Input_Bus" title="Intelligent Input Bus">IBus</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Dconf" title="Dconf">dconf</a></li>
<li><a href="GNOME_Keyring" title="GNOME Keyring">Keyring</a></li>
<li><a href="GNOME-DB" class="mw-redirect" title="GNOME-DB">GNOME-DB</a></li>
<li><a href="GVfs" title="GVfs">GVfs</a>
<ul><li><a href="GnomeVFS" title="GnomeVFS">GnomeVFS</a></li></ul></li>
<li><a href="Librsvg" title="Librsvg">Librsvg</a></li>
<li><a href="TinySPARQL" title="TinySPARQL">TinySPARQL</a></li>

<li><a href="Libxslt" title="Libxslt">libxslt</a></li>
<li><a href="Libxml2" title="Libxml2">libxml2</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:9em"><a href="Freedesktop.org" title="Freedesktop.org">freedesktop.org</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AppStream" title="AppStream">AppStream</a></li>
<li><a href="D-Bus" title="D-Bus">D-Bus</a></li>
<li><a href="GStreamer" title="GStreamer">GStreamer</a></li>
<li><a href="NetworkManager" title="NetworkManager">NetworkManager</a></li>
<li><a href="Poppler_(software)" title="Poppler (software)">Poppler</a></li>
<li><a href="Wayland_(display_server_protocol)" class="mw-redirect" title="Wayland (display server protocol)">Wayland</a></li>
<li><a href="X.Org_Server" title="X.Org Server">X.Org Server</a></li>
<li><a href="PulseAudio" title="PulseAudio">PulseAudio</a></li>
<li><a href="PackageKit" title="PackageKit">PackageKit</a></li>
<li><a href="HarfBuzz" title="HarfBuzz">HarfBuzz</a></li>
<li><a href="Cairo_(graphics)" title="Cairo (graphics)">Cairo</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Community</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="GNOME_Foundation" title="GNOME Foundation">GNOME Foundation</a></li>
<li><a href="GNOME_Users_And_Developers_European_Conference" class="mw-redirect" title="GNOME Users And Developers European Conference">GUADEC</a></li>
<li><a href="The_GNOME_Project" class="mw-redirect" title="The GNOME Project">The GNOME Project</a></li>
<li><a href="Outreachy" title="Outreachy">Outreachy</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Miguel_de_Icaza" title="Miguel de Icaza">Miguel de Icaza</a></li>
<li><a href="Luis_Villa" title="Luis Villa">Luis Villa</a></li>
<li><a href="Havoc_Pennington" title="Havoc Pennington">Havoc Pennington</a></li>
<li><a href="Karen_Sandler" title="Karen Sandler">Karen Sandler</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2" style="font-weight: bold"><div>
<ul><li><b><span class="nowrap"><span class="noviewer" typeof="mw:File"></span> </span><a href="Portal%3ALinux" title="Portal:Linux">Linux portal</a></b></li>
<li><b><span class="nowrap"><span class="noviewer" typeof="mw:File"><span></span></span> </span><a href="Portal%3AFree_and_open-source_software" title="Portal:Free and open-source software">Free and open-source software portal</a></b></li>
<li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category</li>
<li><span class="noviewer" typeof="mw:File"><span title="Commons page"></span></span> <a href="https://commons.wikimedia.org/wiki/Category:GNOME" class="extiw external" title="commons:Category:GNOME">Commons</a></li>
<li><span class="noviewer" typeof="mw:File"><span title="WikiProject"></span></span> WikiProject</li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="C_programming_language527" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="C_programming_language527" style="font-size:114%;margin:0 4em"><a href="C_(programming_language)" title="C (programming language)">C programming language</a></div></th></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><a href="ANSI_C" title="ANSI C">ANSI C</a></li>
<li><a href="C99" title="C99">C99</a></li>
<li><a href="C11_(C_standard_revision)" title="C11 (C standard revision)">C11</a></li>
<li><a href="C17_(C_standard_revision)" title="C17 (C standard revision)">C17</a></li>
<li><a href="C23_(C_standard_revision)" title="C23 (C standard revision)">C23</a></li>
<li><a href="Embedded_C" title="Embedded C">Embedded C</a></li>
<li><a href="MISRA_C" title="MISRA C">MISRA C</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Features</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Subroutine" class="mw-redirect" title="Subroutine">Functions</a></li>
<li><a href="Include_directive#C" title="Include directive">Header files</a></li>
<li><a href="Operators_in_C_and_C%2B%2B" title="Operators in C and C++">Operators</a></li>
<li><a href="C_string_handling" title="C string handling">String</a></li>
<li><a href="C_syntax" title="C syntax">Syntax</a></li>
<li><a href="C_preprocessor" title="C preprocessor">Preprocessor</a></li>
<li><a href="C_data_types" title="C data types">Data types</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="C_standard_library" title="C standard library">Standard library</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td colspan="2" class="navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="C_character_classification" title="C character classification">Char</a></li>
<li><a href="C_file_input/output" title="C file input/output">File I/O</a></li>
<li><a href="C_mathematical_functions" title="C mathematical functions">Math</a></li>
<li><a href="C_dynamic_memory_allocation" title="C dynamic memory allocation">Dynamic memory</a></li>
<li><a href="C_string_handling" title="C string handling">String</a></li>
<li><a href="C_date_and_time_functions" title="C date and time functions">Time</a></li>
<li><a href="Stdarg.h" title="Stdarg.h">Variadic</a></li>
<li><a href="C_POSIX_library" title="C POSIX library">POSIX</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Implementations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Bionic_(software)" title="Bionic (software)">Bionic</a>
<ul><li><a href="Hybris_(software)" class="mw-redirect" title="Hybris (software)">libhybris</a></li></ul></li>
<li><a href="Dietlibc" title="Dietlibc">dietlibc</a></li>
<li><a href="Glibc" title="Glibc">glibc</a>
<ul><li><a href="Embedded_GLIBC" class="mw-redirect" title="Embedded GLIBC">EGLIBC</a></li></ul></li>
<li><a href="Klibc" title="Klibc">klibc</a></li>
<li><a href="Microsoft_Windows_library_files" title="Microsoft Windows library files">Windows CRT</a></li>
<li><a href="Musl" title="Musl">musl</a></li>
<li><a href="Newlib" title="Newlib">Newlib</a></li>
<li><a href="UClibc" title="UClibc">uClibc</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="List_of_C_compilers" class="mw-redirect" title="List of C compilers">Compilers</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Amsterdam_Compiler_Kit" title="Amsterdam Compiler Kit">ACK</a></li>
<li><a href="Borland_Turbo_C" class="mw-redirect" title="Borland Turbo C">Borland Turbo C</a></li>
<li><a href="Clang" title="Clang">Clang</a></li>
<li><a href="GNU_Compiler_Collection" title="GNU Compiler Collection">GCC</a></li>
<li><a href="Intel_C%2B%2B_Compiler" title="Intel C++ Compiler">ICC</a></li>
<li><a href="LCC_(compiler)" title="LCC (compiler)">LCC</a></li>
<li><a href="Norcroft_C_compiler" title="Norcroft C compiler">Norcroft C</a></li>
<li><a href="Portable_C_Compiler" title="Portable C Compiler">PCC</a></li>
<li><a href="Small_Device_C_Compiler" title="Small Device C Compiler">SDCC</a></li>
<li><a href="Tiny_C_Compiler" title="Tiny C Compiler">TCC</a></li>
<li><a href="Microsoft_Visual_C%2B%2B" title="Microsoft Visual C++">Visual C++ (MSVC)</a></li>
<li><a href="Watcom_C/C%2B%2B" title="Watcom C/C++">Watcom C/C++</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Integrated_development_environment" title="Integrated development environment">IDEs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Anjuta" title="Anjuta">Anjuta</a></li>
<li><a href="CLion" class="mw-redirect" title="CLion">CLion</a></li>
<li><a href="Code%3A%3ABlocks" title="Code::Blocks">Code::Blocks</a></li>
<li><a href="CodeLite" title="CodeLite">CodeLite</a></li>
<li><a href="Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li>
<li><a href="Geany" title="Geany">Geany</a></li>
<li><a href="GNOME_Builder" title="GNOME Builder">GNOME Builder</a></li>
<li><a href="KDevelop" title="KDevelop">KDevelop</a></li>
<li><a href="NetBeans" title="NetBeans">NetBeans</a></li>
<li><a href="Visual_Studio" title="Visual Studio">Visual Studio</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Comparison with<br>other languages</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Compatibility_of_C_and_C%2B%2B" title="Compatibility of C and C++">Compatibility of C and C++</a></li>
<li><a href="Comparison_of_Pascal_and_C" title="Comparison of Pascal and C">Comparison with Pascal</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Descendant<br>languages</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Alef_(programming_language)" title="Alef (programming language)">Alef</a></li>
<li><a href="C%2B%2B" title="C++">C++</a></li>
<li><a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a></li>
<li><a href="D_(programming_language)" title="D (programming language)">D</a></li>
<li><a href="Objective-C" title="Objective-C">Objective-C</a></li>
<li><a href="Go_(programming_language)" title="Go (programming language)">Go</a></li>

<li><a href="Zig_(programming_language)" title="Zig (programming language)">Zig</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Designer</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Dennis_Ritchie" title="Dennis Ritchie">Dennis Ritchie</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-06-24" href="https://en.wikipedia.org/wiki/?title=Vala_(programming_language)&amp;oldid=1297154949">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>